DSSS modulation is used in a wide variety of applications, including Global Navigation Satellite Systems (GNSS), radio frequency ranging systems, radio frequency time transfer systems, anti-jamming receivers and channel sounding. An example of a DSSS signal is illustrated in FIG. 1, and comprises a carrier wave that has been phase-modulated with a sequence of pseudonoise “chips”, each chip having a much shorter duration than an information bit. The sequence of chips can be referred to as a spreading code, and comprises a Pseudo-Random Number (PRN) sequence. A data signal, which has a much lower bit rate than the chip signal, can be recovered from a received DSSS signal by multiplying the received DSSS signal with a replica of the spreading code.
Many Digital Signal Processing (DSP) algorithms require a DSSS signal to be correlated with a replica of a spreading code at the receiver. In a GNSS receiver, the correlation process can be considered to be the most important DSP process, since without this it would not be possible for the receiver to lock onto and track the downlink signals and make time-of-arrival measurements from satellites in a GNSS constellation. In general, a DSSS correlation process involves correlating incoming samples against a replica of a candidate spreading code, which can be referred to as a filter kernel, and detecting a peak in the correlation function. To make a precise time-of-arrival estimate, many GNSS implementations use a sample rate of the signal which is significantly larger than the native sample rate of the filter kernel, which in a GNSS receiver is one sample per chip.
A Fourier-based tracking algorithm for obtaining a correlation function in a GNSS receiver is disclosed in “A Real-time FFT Based Block Processing Method with Near Linear Scaling”, M. Turner, A. R. (2015), ION ITM. The algorithm transforms blocks of 50% zero padded time domain samples into blocks of frequency domain samples, applies the Doppler and phase corrections that were obtained during acquisition, multiplies the frequency-domain samples by the relevant Fourier transformed spreading code, and accumulates data over one data symbol period to integrate the underlying correlation function over many Fast Fourier Transform (FFT) blocks. An Inverse FFT (IFFT) operation is then performed to transform the correlation function back to the time domain for further processing.
One drawback with this method is that the instantaneous memory bandwidth and capacity required can very quickly become unacceptably large. For example, when oversampling the Galileo Open service PRN signal, which has 4092 chips per PRN cycle, at an oversampling rate of 50×, the Fourier domain storage requirement per satellite tracking chain is: 4092×50(upsample)×13(bit)×2(zero pad)×2(complex)=10639200(bits)=10.6 Mbits. The memory bandwidth per tracking chain is: 50(oversample rate)×1023000(chip rate)×2(zero pad)×13(bit width)×2(complex)=2659800000 (bits/sec)=2.66 (Gbit/sec). Therefore to track downlink signals from one hundred satellites in a GNSS constellation, a total bandwidth of 266 Gb/s and 1 Gb of storage capacity would be required for a high performance receiver with a sample rate 50 MS/s. Currently, the most memory-rich commercially available Field Programmable Gate Array (FPGA) contains 24.2 Mbits of block random access memory (BRAM), and could therefore only accommodate up to two tracking channels in the above-described example. This limitation renders the Fourier-based tracking algorithm impractical for FPGA implementations, without using off-FPGA chip fast volatile memory.
The invention is made in this context.